package com.gqh.weather.domain.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 分类枚举
 */
@Getter
@AllArgsConstructor
public enum FenleiEnum {

    /**
     * 全部
     */
    ALL(0, "全部"),

    /**
     * 思想品德
     */
    MORAL(1, "思想品德"),

    /**
     * 学业发展
     */
    ACADEMIC(2, "学业发展"),

    /**
     * 体质健康
     */
    HEALTH(3, "体质健康"),

    /**
     * 心理健康
     */
    MENTAL(4, "心理健康"),

    /**
     * 艺术素质
     */
    ART(5, "艺术素质"),

    /**
     * 劳动素养
     */
    LABOR(6, "劳动素养");

    /**
     * 分类值
     */
    private final Integer value;

    /**
     * 分类描述
     */
    private final String description;

    /**
     * 根据值获取枚举
     *
     * @param value 分类值
     * @return 分类枚举
     */
    public static FenleiEnum fromValue(Integer value) {
        if (value == null) {
            return null;
        }
        for (FenleiEnum item : values()) {
            if (item.getValue().equals(value)) {
                return item;
            }
        }
        return null;
    }

    /**
     * 验证分类值是否有效
     *
     * @param value 分类值
     * @return 是否有效
     */
    public static boolean isValid(Integer value) {
        return fromValue(value) != null;
    }

    /**
     * 获取分类描述
     *
     * @param value 分类值
     * @return 分类描述
     */
    public static String getDescription(Integer value) {
        FenleiEnum item = fromValue(value);
        return item != null ? item.getDescription() : "未知分类";
    }
}
